from _typeshed import Incomplete
from ducktape.cluster.node_container import NodeContainer as NodeContainer

LINUX: str
WINDOWS: str
SUPPORTED_OS_TYPES: list[str]

class NodeSpec:
    operating_system: str

    def __init__(self, operating_system=...) -> None: ...

class ClusterSpec:
    nodes: Incomplete

    @staticmethod
    def empty() -> ClusterSpec: ...
    @staticmethod
    def simple_linux(num_nodes: int) -> ClusterSpec: ...
    @staticmethod
    def from_nodes(nodes) -> ClusterSpec: ...
    def __init__(self, nodes: Incomplete | None = ...) -> None: ...
    def __len__(self) -> int: ...
    def __iter__(self): ...
    def size(self) -> int: ...
    def add(self, other) -> ClusterSpec: ...
    def clone(self) -> ClusterSpec: ...
